/**
 * 
 */
package com.wechat.service;

import java.util.Map;
import java.util.UUID;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.alibaba.fastjson.JSON;
import com.wechat.controller.WeChatController;

import basic.base.service.BaseService;
import basic.commons.util.SHA1Util;
import basic.commons.util.URLReader;


@Service
@Transactional
public class WeChatService extends BaseService {
	private Logger logger = Logger.getLogger(WeChatController.class);

	private static final String Appid="wxf2f0f8f55edbf0f1";
	private static final String Appsecret="53b723db396fadf7240c4faf39027f8e";
	private static final String Access_Token="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+Appid+"&secret="+Appsecret;
	private static final String Ticket="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi";
	

	/**
	 * 获取Access_Token
	 * @return
	 */
	public String getAccessToken(){
		String str=URLReader.getDate(Access_Token);
		Map<String, Object> map = JSON.parseObject(str);
		str=(String)map.get("access_token");
		return str;
	}
	
	/**
	 * 获取jsapi_ticket
	 * @param args
	 * @throws Exception
	 */
	public String getTicket(String token){
		String url=Ticket.replace("ACCESS_TOKEN", token);
		String jsonStr=URLReader.getDate(url);
		Map<String, Object> map = JSON.parseObject(jsonStr);
		String ticket=(String)map.get("ticket");
		return ticket;
	}
	
	
	public static void main(String[] args) throws Exception {
		String str=URLReader.getDate(Access_Token);
		Map<String, Object> map = JSON.parseObject(str);
		str=(String)map.get("access_token");
		String url=Ticket.replace("ACCESS_TOKEN", str);
		String jsonStr=URLReader.getDate(url);
		System.out.println(jsonStr);
		
	}
	
	
//	public void handleMsg(HttpServletRequest req, HttpServletResponse resp) {
//		boolean flag = false;// 是否需要回复发送消息
//		String respXml ="";
//		try {
//			Map<String, String> reqMap = XmlUtil.paseXml2Map(req);
//			Set<String> keys = reqMap.keySet();
//			for (String key : keys) {
//				System.err.println("the key and value is: " + key + " = " + reqMap.get(key));
//			}
//			String fromUserName = reqMap.get("FromUserName");
//			String toUserName = reqMap.get("ToUserName");
//			String createTime = reqMap.get("CreateTime");
//			String msgType = reqMap.get("MsgType");
//			String msgID = reqMap.get("MsgId");
//
//			TextRespMessage textRespMessage = new TextRespMessage();
//			textRespMessage.setFromUserName(toUserName);
//			textRespMessage.setToUserName(fromUserName);
//			textRespMessage.setCreateTime(new Date().getTime());
//			textRespMessage.setMsgType(Constants.REQ_MESSAGE_TYPE_TEXT);
//
//			if (msgType.equals("text")) {// 文本消息
//				logger.error("文本消息");
//				String content = reqMap.get("Content");
//				if(StringUtil.isNotEmpty(content)&& content.toUpperCase().equals("VR")){
//					flag=true;
//					respXml = respVR(toUserName, fromUserName);
//				}
//			} else if (msgType.equals("image")) {// 图片消息
//				logger.error("图片消息");
//			} else if (msgType.equals("voice")) {// 声音消息
//				logger.error("声音消息");
//			} else if (msgType.equals("video")) {// 视频消息
//				logger.error("视频消息");
//			} else if (msgType.equals("location")) {// 地理位置消息
//				logger.error("地理位置消息");
//			} else if (msgType.equals("link")) {// 链接消息
//				logger.error("链接消息");
//			} else if (msgType.equals(Constants.REQ_MESSAGE_TYPE_EVENT)) {
//				String eventType= reqMap.get("Event").toLowerCase();
//				if (eventType.equals(Constants.EVENT_TYPE_SUBSCRIBE.toLowerCase())) {// 关注
//					flag=true;
//					String ableFlag = EntryUtil.getItemByCodeAndValue("wechat_article", "wechat_enable").getContent();
//					System.err.println("关注微信"+ableFlag );
//					if(StringUtil.isNotEmpty(ableFlag)&& ableFlag.equals("true")){
//						respXml = inActivity(toUserName, fromUserName);
//					}else{
//						respXml = subscribe(toUserName, fromUserName);
//					}
//				} else if (eventType.equals(Constants.EVENT_TYPE_UNSUBSCRIBE.toLowerCase())) {// 取消关注
//					UserinfoService userinfoService = PEMBeanFactory.getUserinfoService();
//					Userinfo userinfo=new Userinfo();
//					userinfo.setWechatstatus(Userinfo.Account_WechatStatus_UnBind);
//					userinfo.setUnbindtime(new Date());
//					userinfo.setOpenid(fromUserName);
//					userinfoService.unsubscribe(userinfo);
//					logger.error("取消关注");
//				} else if (eventType.equals(Constants.EVENT_TYPE_SCAN.toLowerCase())) {// 扫描
//					logger.error("扫描");
//				} else if (eventType.equals(Constants.EVENT_TYPE_LOCATION.toLowerCase())) {// 地址
//					logger.error("地址");
//				} else if (eventType.equals(Constants.EVENT_TYPE_CLICK.toLowerCase())) {// 点击
//					logger.error("点击");
//				} else if (eventType.equals(Constants.EVENT_TYPE_VIEW)) {// 视图
//					logger.error("视图");
//				}
//			}
//			if(flag){
//				System.err.println("微信发送响应消息"+respXml);
//				if(StringUtil.isNotEmpty(respXml)){
//					PrintWriter out = resp.getWriter();
//					out.print(respXml);
//					out.flush();
//					out.close();
//				}
//			}
//		} catch (Exception e) {
//		}
//	}
	
	/**
	 * 用户关注公共账号
	 * @param toUserName
	 * @param fromUserName
	 * @return
	 * @throws Exception 
	 */
//	private String subscribe(String toUserName,String fromUserName) throws Exception{
//		TextRespMessage textRespMessage=new TextRespMessage();
//        textRespMessage.setFromUserName(toUserName);
//        textRespMessage.setToUserName(fromUserName);
//        textRespMessage.setCreateTime(new Date().getTime());
//        textRespMessage.setMsgType(Constants.REQ_MESSAGE_TYPE_TEXT);
//        StringBuilder sb=new StringBuilder();
//      	sb.append("Hello，感谢您的关注！\ue056").append("\n\n");
//      	sb.append("股权易，清科集团旗下在线股权交易平台，专业、高效、安全，覆盖融资全流程。").append("\n\n");
//      	sb.append("股权易全程与您陪伴，是业内唯一一家已经帮助天使轮至pre-IPO各阶段企业完成融资、并购及股权转让交易的平台，现已有万家知名投资机构入驻，并拥有强大的智能匹配引擎和安全的隐私机制，为您精准匹配投资人，让融资更高效！").append("\n\n");
//      	sb.append("点击下方一键上传BP，遇见最合适的投资人，融资从此更容易。");
//      	String respContent=sb.toString();
//      	textRespMessage.setContent(respContent);
//      	String respXml = XmlUtil.paseBean2Xml(textRespMessage);
//      	return respXml;
//	}
	
//	public String inActivity(String toUserName,String fromUserName){
//		NewsRespMessage newmsg= new NewsRespMessage();
//		newmsg.setArticleCount(1);
//		List<Article> articles=new ArrayList<Article>();
//		Article article=new Article();
//		article.setTitle("中国股权投资论坛群聊");//"找投资，找好项目，要等到猴年马月?"
//		article.setDescription("点击进入群聊");//"这是个测试这是个测试这是个测试这是个测试这是个测试这是个测试这是个测试这是个测试"
//		article.setPicUrl("http://7xt56y.com1.z0.glb.clouddn.com/webim/webimBaner.png");//"http://pemarket.com.cn/pem/img/logo.png"
////		article.setUrl(EntryUtil.getItemByCodeAndValue("wechat_article", "wechat_url").getContent());//"http://mp.weixin.qq.com/s?__biz=MzA4MzkwMzcwOQ==&mid=2649212644&idx=1&sn=791ce0f1a0abc40308f690c1bb669a3a&scene=0#rd
//		article.setUrl("https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx76cf63e9d00931c4&redirect_uri=http://wxdemo.zero2ipo.com.cn/webimctl/activityuser/oauthInfo&response_type=code&scope=snsapi_userinfo&state=aadaaaa#wechat_redirect");
//		articles.add(article);
//		newmsg.setArticles(articles);
//		newmsg.setCreateTime(System.currentTimeMillis());
//		newmsg.setFromUserName(toUserName);
//		newmsg.setToUserName(fromUserName);
//		newmsg.setMsgType("news");
//        String respXml = XmlUtil.message2Xml(newmsg);
//        return  respXml;
//	}
	
//	public String respVR(String toUserName,String fromUserName) throws Exception{
//		TextRespMessage textRespMessage=new TextRespMessage();
//        textRespMessage.setFromUserName(toUserName);
//        textRespMessage.setToUserName(fromUserName);
//        textRespMessage.setCreateTime(new Date().getTime());
//        textRespMessage.setMsgType(Constants.REQ_MESSAGE_TYPE_TEXT);
//        StringBuilder sb=new StringBuilder();
//      	sb.append("收藏贴 | 国内外VR企业对标").append("\n");
//      	sb.append("http://pemarket.com.cn");
//      	String respContent=sb.toString();
//      	textRespMessage.setContent(respContent);
//      	String respXml = XmlUtil.paseBean2Xml(textRespMessage);
//      	return respXml;
//		NewsRespMessage newmsg= new NewsRespMessage();
//		newmsg.setArticleCount(1);
//		List<Article> articles=new ArrayList<Article>();
//		Article article=new Article();
//		article.setTitle("收藏贴 | 国内外VR对标企业名单");//"找投资，找好项目，要等到猴年马月?"
//		article.setDescription("最详细国内外VR企业对标一览表，最全面覆盖VR核心产业链各个领域。");//"这是个测试这是个测试这是个测试这是个测试这是个测试这是个测试这是个测试这是个测试"
//		article.setPicUrl("http://pemarket.com.cn/pem/img/vrlogo.jpg");//"http://pemarket.com.cn/pem/img/logo.png"
//		article.setUrl("http://pemarket.com.cn/wxpem/views/indexxls.html");//"http://mp.weixin.qq.com/s?__biz=MzA4MzkwMzcwOQ==&mid=2649212644&idx=1&sn=791ce0f1a0abc40308f690c1bb669a3a&scene=0#rd
//		articles.add(article);
//		newmsg.setArticles(articles);
//		newmsg.setCreateTime(System.currentTimeMillis());
//		newmsg.setFromUserName(toUserName);
//		newmsg.setToUserName(fromUserName);
//		newmsg.setMsgType("news");
//        String respXml = XmlUtil.message2Xml(newmsg);
//        return  respXml;
//	}
	
	
}
